1、離線數據:hive
Hive 查詢操作過程嚴格遵守Hadoop MapReduce 的作業執行模型,Hive 將用戶的Hive SQL 語句通過解釋器轉換為MapReduce 作業提交到Hadoop 集群上,Hadoop 監控作業執行過程,然后返回作業執行結果給用戶。
Hive 并非為聯機事務處理而設計,Hive 并不提供實時的查詢和基于行級的數據更新操作。Hive 的最佳使用場合是大數據集的批處理作業。
使用hive sql 時,其語言將被轉化為mapreduce過程執行。
2、準實時數據:spark
Spark之所以能成為準實時數據查詢主要基于兩點:
1)spark stream將數據分成小的時間片段,以類batch批量處理的方式來處理這部分數據
2)能基于內存進行迭代,以RDD的形式實現(記錄操作而非數據本身),因此也存在容錯能力。
使用spark sql時,其語言將被轉化為RDD,然后將會交到集群執行。
3、實時數據:flink
Flink本身是個計算引擎,不存儲數據,因此使用前需要確定其數據的輸入(SOURCE)/輸出(SINK)系統。實時計算/Flink中所謂的建表,都是邏輯表,目的僅是讓Flink作業知道上下游的數據結構。并不會真的在上下游系統建表。
簡單來說,flink sql是一個常駐進程,一個sql文件,就對應于一個flink作業。如果不殺死這個進程,一旦由新的數據輸入,就會產生新的數據結果。